package _25_visitor_pattern.v2_0;

/**
 * @Description: 访问者实现
 * @Auther: 2019/6/30 9:25 by zhang.jy
 */
public class Visitor implements IVisitor {
	//访问普通员工，打印出报表
	public void visit(CommonEmployee commonEmployee) {
		System.out.println(this.getCommonEmployee(commonEmployee));
	}

	//访问部门经理，打印出报表
	public void visit(Manager manager) {
		System.out.println(this.getManagerInfo(manager));
	}

	//组装出基本信息
	private String getBasicInfo(Employee employee) {
		String info = "姓名：" + employee.getName() + "\t";
		info = info + "性别：" + (employee.getSex() == Employee.FEMALE ? "女" : "男") + "\t";
		info = info + "薪水：" + employee.getSalary() + "\t";
		return info;
	}

	//组装出部门经理的信息
	private String getManagerInfo(Manager manager) {
		String basicInfo = this.getBasicInfo(manager);
		String otherInfo = "业绩：" + manager.getPerformance() + "\t";
		return basicInfo + otherInfo;
	}

	//组装出普通员工信息
	private String getCommonEmployee(CommonEmployee commonEmployee) {
		String basicInfo = this.getBasicInfo(commonEmployee);
		String otherInfo = "工作：" + commonEmployee.getJob() + "\t";
		return basicInfo + otherInfo;
	}
}